// pages/teacher/evaluate/index.js
import { Serve } from '../../../utils/index'
Page({
	/**
	 * 页面的初始数据
	 */
	data: {
		titles: [],
		test: null,
		file: null,
		record: null,
		filename: '',
		evalue: [],
	},

	handleEvalueChange(e) {
		const { index } = e.currentTarget.dataset
		const { evalue } = this.data
		const i = e.detail.value * 1
		evalue[index] = i
		this.setData({ evalue })
	},

	tapDisabledEvalue(e) {
		const { type } = e.currentTarget.dataset
		// 如果是选择题就不用评分了, 因为系统自动会评结果
		if (!type) {
			wx.showToast({
				title: '选择题由系统评分, 人工不可再次评分',
				icon: 'none',
				mask: true,
				duration: 800,
			})
			return 0
		}
	},

	// mark: 查看文件
	previewFile(e) {
		const { fileid } = e.currentTarget.dataset
		wx.showLoading({ title: '预览文件', mask: true })
		wx.cloud.downloadFile({
			fileID: fileid, // 文件 ID
			success: (res) => {
				// 返回临时文件路径
				let path = res.tempFilePath //返回的文件临时地址，用于后面打开本地预览所用
				wx.openDocument({
					filePath: path,
					showMenu: true,
					success: function (res) {
						console.log('打开成功')
						wx.hideLoading()
					},
					fail(err) {
						console.error('出错了', err)
						wx.showToast({
							title: '出错了',
							icon: 'error',
							mask: true,
							duration: 800,
						})
					},
				})
			},
		})
	},

	// mark: "文件任务评分"输入框
	evalueFileTask(e) {
		const { titles, evalue } = this.data
		const index = titles.length
		evalue[index] = e.detail.value * 1
		this.setData({ evalue })
	},

	// mark: "确认评分"按钮
	async confirmEvaluate() {
		const { evalue, test, record } = this.data
		// 通过class_id 和 openid 可以实现对应班级学生平时分的更新
		const { class_id } = test
		const { openid } = record
		let score = 0

		evalue.forEach((s) => {
			score += s
		})

		wx.showLoading({ title: '计算平时分', mask: true })
		const result = await Serve.UpdateScore({ score, openid, class_id })
		wx.showToast({ title: '成功', icon: 'success', mask: true, duration: 800 })
		wx.navigateBack()
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	async onLoad(options) {
		const { test_id, openid } = options
		wx.showLoading({ title: '获取详情', mask: true })
		const data = await Serve.GetTestRecord({ test_id, openid })
		let filename = ''
		// 初始化评分数组
		const evalue = Array(data.title.length).fill(0)
		let titles = data.title
		const step = 1 // 得分步长

    // 处理文件显示区域
    // 如果有文件
    if (data.test.has_file) {
      filename = data.file[0].path.split('/').slice(-1)
    }

		// 系统计算选择题得分
		for (let index = 0; index < titles.length; index++) {
			if (titles[index].answer === data.record[0].answer[index]) {
				evalue[index] = titles[index].score
			}
		}

		// 给picker选择器提供的range
		titles = titles.map((i) => {
			const evalueRange = []
			for (let j = 0; j <= i.score; j += step) {
				evalueRange.push(j)
			}
			return {
				...i,
				evalueRange,
			}
		})
		if (data.test.has_file) {
			evalue.push(0)
		}

    const titleText = data.test.name + '-' + data.record[0].name
    wx.setNavigationBarTitle({
      title: titleText,
    })

		this.setData({
			titles,
			test: data.test,
			file: data.file[0],
			record: data.record[0],
			filename,
			evalue,
		})
		wx.hideLoading()
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {},
})
